﻿using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
using System.Threading.Tasks;
using NP.BPMReportPlatform.Entities.BPM_Business;
using NP.BPMReportPlatform.FrameOrder.Dto;
using Volo.Abp.Application.Dtos;
using Volo.Abp.Application.Services;

namespace NP.BPMReportPlatform.FrameOrder
{
    public interface IFrameOrderService : IApplicationService
    {
        /// <summary>
        /// 查询数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<GetFrameOrderOutput>> GetAllAsync(GetFrameOrderInput input);

        /// <summary>
        /// 探亲次数报表
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<FrameOrderChildrszwbt>> GetVisitAsync(GetFrameOrderInput input);

        /// <summary>
        /// 探亲次数重新推送
        /// </summary>
        /// <param name="instanceNumber">流程编号</param>
        /// <returns></returns>
        Task<string> PushVisitRetryAsync(string instanceNumber);

        /// <summary>
        /// 驻外补贴重新推送给SF
        /// </summary>
        /// <param name="instanceNumber"></param>
        /// <returns></returns>
        Task<string> PushRSZWToSF(string instanceNumber);

        /// <summary>
        /// 租房补贴记录查询
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<GetFrameOrderPullingRecordOutput>> GetRentalAllowanceAsync(GetFraneOrderPushRecordInput input);

        /// <summary>
        /// 框架订单迁移
        /// </summary>
        /// <param name="bytes"></param>
        /// <returns></returns>
        Task<ImportResultExt<FrameOrderImportDto.ImportInput>> ImporterExcelAsync(byte[] bytes);

        /// <summary>
        /// 导出数据
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<GetFrameOrderOutput>> ExportAsync(GetFrameOrderInput input);


        /// <summary>
        /// 更新businessType
        /// </summary>
        /// <param name="instanceNumber"></param>
        /// <returns></returns>
        Task UpdateBusinessType(string instanceNumber);

        /// <summary>
        /// 薪资组批量确认
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task BatchConfirmation(List<string> input);

        /// <summary>
        /// 获取框架订单推送记录
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<PagedResultDto<GetFraneOrderPushRecordOutput>> GetFraneOrderPushRecordAsync(GetFraneOrderPushRecordInput input);

        /// <summary>
        /// 导出框架订单推送记录
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        Task<List<GetFraneOrderPushRecordOutput>> ExportFraneOrderPushRecordAsync(GetFraneOrderPushRecordInput input);


        /// <summary>
        /// 
        /// </summary>
        /// <param name="ids">主键ID</param>
        /// <returns></returns>
        Task SendThirdSystem(IEnumerable<Guid> ids);
    }
}